using System;
using System.Collections.Generic;
using System.Text;
using SDMX_Common = SDMX_ML.Framework.Common;

namespace SDMX_ML.Framework.Structure
{
    public class PrimaryMeasureType
    {

        public PrimaryMeasureType(SDMX_Common.IDType conceptRef)
        {
            if (conceptRef != null)
            {
                _conceptRef = conceptRef;
                _textFormat = new List<TextFormatType>();
            }
            else
            {
                throw new Exception("Attribute ConceptRef is a required field");
            }
        }

        public PrimaryMeasureType(string conceptRef)
        {
            if (!String.IsNullOrEmpty(conceptRef))
            {
                _conceptRef = new SDMX_Common.IDType(conceptRef);
                _textFormat = new List<TextFormatType>();
            }
            else
            {
                throw new Exception("Attribute ConceptRef is a required field");
            }
        }

        private List<TextFormatType> _textFormat;

        public List<TextFormatType> TextFormat
        {
            get { return _textFormat; }
            set { _textFormat = value; }
        }

        private SDMX_Common.AnnotationsType _annotation;

        public SDMX_Common.AnnotationsType Annotations
        {
            get { return _annotation; }
            set { _annotation = value; }
        }

        private SDMX_Common.IDType _conceptRef;

        public SDMX_Common.IDType ConceptRef
        {
            get { return _conceptRef; }
            set { _conceptRef = value; }
        }
        private string _conceptversion;

        public string ConceptVersion
        {
            get { return _conceptversion; }
            set { _conceptversion = value; }
        }
        private SDMX_Common.IDType _conceptagency;

        public SDMX_Common.IDType ConceptAgency
        {
            get { return _conceptagency; }
            set { _conceptagency = value; }
        }
        private SDMX_Common.IDType _conceptschemaref;

        public SDMX_Common.IDType ConceptSchemaRef
        {
            get { return _conceptschemaref; }
            set { _conceptschemaref = value; }
        }
        private SDMX_Common.IDType _conceptschemaagency;

        public SDMX_Common.IDType ConceptSchemaAgency
        {
            get { return _conceptschemaagency; }
            set { _conceptschemaagency = value; }
        }
        private SDMX_Common.IDType _codelist;

        public SDMX_Common.IDType Codelist
        {
            get { return _codelist; }
            set { _codelist = value; }
        }
        private string _codelistversion;

        public string CodelistVersion
        {
            get { return _codelistversion; }
            set { _codelistversion = value; }
        }
        private SDMX_Common.IDType _codelistagency;

        public SDMX_Common.IDType CodelistAgency
        {
            get { return _codelistagency; }
            set { _codelistagency = value; }
        }
    }
}